/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ufps.cuatro.modelo.asistente.libre.wizard;

import com.ufps.cuatro.controlador.render.UtilRender;
import com.ufps.cuatro.modelo.representacion.componente.Componente;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidor;
import com.ufps.cuatro.util.generadores.GeneradorComponentes;
import com.ufps.cuatro.util.wizard.ObjectTempSwapWizard;
import com.ufps.cuatro.util.wizard.UtilWizard;
import com.ufps.cuatro.util.wizard.WizardPanelDescriptor;
import com.ufps.cuatro.vistas.asistente.libre.wizard.JPanelWizardLibreSelectConfigFinish;
import com.ufps.cuatro.vistas.asistente.libre.wizard.JPanelWizardLibreSelectElements;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

/**
 *
 * @author Carlos A. Torres C. 
 */
public class JPanelWizardLibreSelectConfigFinishDescriptor extends WizardPanelDescriptor  implements ActionListener {
    
    public static final String IDENTIFIER = "SELECT_CONFIG_FINISH";
    private JPanelWizardLibreSelectConfigFinish objPanel;
    
    public JPanelWizardLibreSelectConfigFinishDescriptor() {        
//      if(objPanel != null){
            objPanel = new JPanelWizardLibreSelectConfigFinish();
            objPanel.addCheckBoxActionListener(JPanelWizardLibreSelectConfigFinishDescriptor.this);

            setPanelDescriptorIdentifier(IDENTIFIER);
            setPanelComponent(objPanel);
//        } 
//       else{
//            UtilRender.printlnConsole("Objeto Panel Nulo.", UtilRender.ACTION_NORMAL, false);            
//        }
    }

    @Override
    public void displayingPanel() {   
//      try{
            JPanelWizardLibreSelectElementsDescriptor objPanelDescriptor = (JPanelWizardLibreSelectElementsDescriptor) this.getWizardModel().getPanelDescriptor(JPanelWizardLibreSelectElementsDescriptor.IDENTIFIER);
            JPanelWizardLibreSelectElements objTempPanel = (JPanelWizardLibreSelectElements) objPanelDescriptor.getPanelComponent();
            ArrayList<ComponenteDistribuidor> objElementos = objTempPanel.getObjElementos();
            if(GeneradorComponentes.existeTipoComponenteEnColeccion(objElementos, Componente.COMPONENTE_DISTRIBUIDOR_INTEGRADOR)){
                objPanel.getjRadioButtonPanel().setEnabled(false);
                if(objPanel.getjRadioButtonPanel().isSelected()){
                    objPanel.getjRadioButtonFrame().setSelected(true);
                }
            }
            else{
                objPanel.getjRadioButtonPanel().setEnabled(true);
             }
//        }catch(java.lang.NullPointerException ex){}
    }
    
    @Override
    public Object getNextPanelDescriptor() {
        return JPanelWizardLibreSelectConfigFinishDescriptor.FINISH;
    }
    
    @Override
    public Object getBackPanelDescriptor() {
        return JPanelWizardLibreSelectElementsDescriptor.IDENTIFIER;
    }
    
    @Override
    public void aboutToDisplayPanel() {
//       try{
            setNextButtonAccordingToCheckBox();
//        }catch(java.lang.NullPointerException ex){}
    }    
    
    public void actionPerformed(ActionEvent e) {
//       if(e != null){
            setNextButtonAccordingToCheckBox();
//        }
    }
    
    private void setNextButtonAccordingToCheckBox() {
         if (objPanel.isCheckBoxSelected()){
             getWizard().setNextFinishButtonEnabled(true);
             procesarConfiguracion();
         }
         else{
             getWizard().setNextFinishButtonEnabled(false);             
         }           
    }     
    
    private void procesarConfiguracion() {
        JPanelWizardLibreSelectElementsDescriptor objPanelDescriptor = (JPanelWizardLibreSelectElementsDescriptor) this.getWizardModel().getPanelDescriptor(JPanelWizardLibreSelectElementsDescriptor.IDENTIFIER);
        JPanelWizardLibreSelectElements objTempPanel = (JPanelWizardLibreSelectElements) objPanelDescriptor.getPanelComponent();
        ArrayList<ComponenteDistribuidor> objElementos = objTempPanel.getObjElementos();
        boolean distribucionInicial = objPanel.getjRadioButtonHorizontal().isSelected();
        boolean incluirBiblioteca = objPanel.getjCheckBoxAddLib().isSelected();
        int contenedor = (objPanel.getjRadioButtonFrame().isSelected()) ? 0 :
                (objPanel.getjRadioButtonPanel().isSelected()) ? 1 : 2;
        ObjectTempSwapWizard objSwap = new ObjectTempSwapWizard(UtilWizard.WIZARD_ASISTENTE_LIBRE);
        objSwap.add(ObjectTempSwapWizard.ORIENTACION_DISTRIBUCION, Boolean.valueOf(distribucionInicial));
        objSwap.add(ObjectTempSwapWizard.INCLUIR_BIBLIOTECA_GLOBAL, Boolean.valueOf(incluirBiblioteca));
        objSwap.add(ObjectTempSwapWizard.CONTENEDOR_REPRESENTACION, Integer.valueOf(contenedor));
        objSwap.add(ObjectTempSwapWizard.COLECCION, objElementos);
        UtilWizard.objTempSwap = objSwap;
        System.out.println("Configuración Procesada en el Objeto de Intercambio....");
    }
    
}
